Individuals these days employ myriads of computer devices or systems on a regular basis. For example, individuals can have a desktop computer and/or associated file server with which they interact at work. They can also have a laptop computer for working away from the office as well as one or more desktop computers at home. Furthermore, they may have palm-top computers such as a personal digital assistant (PDA), pocket PCs, mobile phones and/or other portable devices they utilize for organizational, communication, and/or entertainment purposes. It is typically desirous for at least some data to be copied to multiple devices to enable convenient access thereto. For instance, often a user will copy files from a desktop computer or file server to a portable computer or device for use while the user is away from their office. The user may then modify or add some new files while away from the office and subsequently needs to copy these files to their desktop computer or file server when they return to the office. Similarly, users may wish to copy pictures or music from one device to another (e.g., computer to MP3 player, digital camera to computer . . . ). Still further yet, users may demand that personal preferences and contacts (e.g., address book) be maintained across all or a subset of their computers. Thus, certain files need to be synchronized across multiple computers or devices.
In its simplest form, synchronization is merely the task of causing designated information from multiple devices or systems to become the same or consistent. Typically, this means that the most up to date information associated with a data object is used to copy to a store. This process is automated by two-way, peer-to-peer, synchronization software applications. In particular, upon activation, a synchronization application can detect changes or additions to data objects on a first device and copy or replicate new and/or altered data objects to a second device communicatively coupled to the first device via, for instance, a hardwired or wireless connection. This causes the data objects on the first device to be synchronized with files on the second device. Synchronization can also be performed remotely by accessing a network having a first device such as desktop computer coupled thereto. A second device such as a second desktop computer or laptop computer can be synchronized with the first device utilizing synchronization software.
Conflicts can periodically occur during a synchronization process. For instance, if the information that is changed in the first device and the second device is associated with the same data object and occurs between synchronizations, a conflict is detected during the next synchronization session. In these situations, some systems that synchronized data objects would provide some type of user interface on the mobile device that would indicate that the conflict existed and that the conflict was with a certain object. In one example, the device user would receive a notification regarding the conflict and the user would be asked to resolve it manually. In other examples no user intervention is possible, such as when files are being synchronized on two servers, and thus conflicts need to be resolved automatically. In yet other examples a combination of both manual and automatic conflict resolution techniques are used. For instance, automatic resolution may be used with pre-established user preferences, such as when the user specifies that in any conflict the information on a particular device should prevail over all others.
Regardless of whether the conflict resolution technique that is employed is manual, automatic, or a combination thereof, it is generally created in a context specific manner that differs for different types of synchronization problems.